package com.hs.srm.admin.modules.orders.dao;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.hs.srm.admin.modules.orders.entity.ScmPoItemEntity;
import com.hs.srm.admin.modules.orders.entity.StockEntity;
import com.hs.srm.admin.modules.orders.vo.ProScmPoItemVo;
import com.hs.srm.admin.modules.orders.vo.ScmPoItemVo;
import com.hs.srm.admin.modules.orders.vo.ScmPoitemDeliverVO;
import com.hs.srm.admin.modules.sampletest.entity.UploadFileRemarkEntity;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 采购订单行项目DAO接口
 *
 * @author Sunnykid
 * @date 2019年3月17日
 */
public interface ScmPoItemDao extends BaseMapper<ScmPoItemEntity> {

    //分页查询数据
    List<ScmPoItemVo> selectDetailPage(RowBounds rowBounds,
                                       @Param("ew") Wrapper<ScmPoItemVo> wrapper, @Param("params") Map<String, Object> params);

    // 根据订单号查询订单行项目
    List<ScmPoItemEntity> getByPoNo(String poNo);

    ScmPoItemVo selectByIdVo(@Param("pkId") String pkId);

    ScmPoItemEntity selectById(@Param("pkId") String pkId);

    int insetStock(StockEntity stockEntity);

    int updaeStock(StockEntity stockEntity);

    //更新上传文件路径
    boolean updateUploadFilePath(UploadFileRemarkEntity uploadFileRemarkEntity);

   /* //保存上传文件路径
    boolean insertUploadFilePath(UploadFileRemarkEntity ufrEntity);*/

    //更新订单变更信息
    int updateOrderInfoById(ScmPoItemEntity itemEntity);

    //根据 采购申请编号purchRequestCode、行项目号purchRequestItemCode，找出同一批订单全删，并且从配额取值生产性订单的要改回配额
    List<ScmPoItemEntity> getItemListByPurchRequest(@Param("prNo") String prNo, @Param("prItemNo") String prItemNo);

    //查询供应商编码,物料编码,工厂代码,发货总量 还原对应的配额
    ProScmPoItemVo selectScmVOByParams(String poItemId);


    //逻辑删除订单
    boolean updateItemDeleteFlag(@Param("poNo") String poNo, @Param("itemNo") String itemNo);

    int getSendSAPCountById(String id);

    List<ScmPoitemDeliverVO> deliverOrderData(List<String> pkIds);

    int updateDeliverFile(List<String> list);

    BigDecimal selectAllPrice();
}
